package com.kaifamiao.sorted;

import java.util.Comparator;
import java.util.HashMap;
import java.util.TreeMap;

/**
 * 1、在 TreeMap 内部 采用 红黑树 来存储 键值对
 * 2、将 键值对 添加到 TreeMap 中时，会根据 键 来确定 键值对 在 二叉树 上的存放位置
 * 3、TreeMap 的直接父类是 AbstractMap类
 * 4、TreeMap 中的 键(key) 不能为 null , 但是 值(value) 可以为 null
 * 5、TreeMap 不是 线程安全 的
 */
public class AnalyseTreeMap {

    public static void main(String[] args) {

        TreeMap<String,Integer> map = new TreeMap<>();

        map.put( "李芳", 1 );
        map.put( "儿女", 2 );
        System.out.println( map );

        map.put( "农丰", 3 );
        System.out.println( map );

        map.put( "鱼香", 4 );
        System.out.println( map );

        System.out.println( map.comparator() );

        System.out.println( "农丰".compareTo( "儿女" ) );
        System.out.println( "李芳".compareTo( "农丰" ) );
        System.out.println( "鱼香".compareTo( "李芳" ) );

        Comparator<String> comparator = new Comparator<String>() {
            @Override
            public int compare(String s1, String s2) {
                // return -( s1.compareTo( s2 ) ) ;
                return s2.compareTo( s1 );
            }
        };

        TreeMap<String,Integer> tm = new TreeMap<>( comparator );
        tm.putAll( map );
        System.out.println( tm );

        System.out.println( tm.comparator() );

    }

}
